#include "LED\led.h"

/* LED是低电平点亮,让他们全部点亮 */
void LED_ALL_ON(void)
{
	LED0_ON();
	LED1_ON();
}

/* LED是低电平点亮,让他们全部熄灭 */
void LED_ALL_OFF(void)
{
	LED0_OFF();
	LED1_OFF();
}

/* LED是低电平点亮,让他们全部闪烁 */
void LED_ALL_TOGGLE(void)
{
	LED0_TOGGLE();
	LED1_TOGGLE();
}

/* 初始化LED
 * 引脚：LED0_GPIO_PORT->LED0, LED1_GPIO_PORT->LED1
 */
void LED_Init(void)
{
	if (LED0_GPIO_PORT == GPIOA)
		__HAL_RCC_GPIOA_CLK_ENABLE();
	else if (LED0_GPIO_PORT == GPIOB)
		__HAL_RCC_GPIOB_CLK_ENABLE();
	if (LED1_GPIO_PORT == GPIOA)
		__HAL_RCC_GPIOA_CLK_ENABLE();
	else if (LED1_GPIO_PORT == GPIOB)
		__HAL_RCC_GPIOB_CLK_ENABLE();

	GPIO_InitTypeDef GPIO_InitStruct = {0};
	GPIO_InitStruct.Pin = LED0;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
	HAL_GPIO_Init(LED0_GPIO_PORT, &GPIO_InitStruct);

	GPIO_InitStruct.Pin = LED1;
	HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);

	LED_ALL_OFF();
}

void LED_Test(uint8_t (*key_read_func)(void))
{
	uint8_t keyData = key_read_func();
	if (keyData == 1)
		LED0_ON();
	else if (keyData == 2)
		LED0_OFF();
	else if (keyData == 3)
		LED1_ON();
	else if (keyData == 4)
		LED1_OFF();
}

/* 测试中时，保持闪烁 */
void LED_main_test(uint8_t testFlag)
{
	if (testFlag < 7)
	{
		LED0_ON();
		LED1_OFF();
	}
	else 
	{
		LED0_OFF();
		LED1_ON();
	}

}
